home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1993 / Internet Info CD-ROM (Walnut Creek) (1993).iso / standards / scsi / scsi1_docs_7.2 < prev    next >
Encoding:
Internet Message Format  |  1993-07-15  |  75.7 KB

  1. From coffin@ROCKY2.ROCKEFELLER.EDU Thu Mar 22 07:13:05 1990
  2. Flags: 000000000001
  3. Return-Path: <coffin@ROCKY2.ROCKEFELLER.EDU>
  4. Received: from ROCKY2.ROCKEFELLER.EDU by rascal.ics.utexas.edu. (4.0/SMI-4.0)
  5.     id AA28268; Thu, 22 Mar 90 07:12:23 CST
  6. Received: by ROCKY2.ROCKEFELLER.EDU (5.61/1.34)
  7.     id AA14317; Thu, 22 Mar 90 08:12:53 -0500
  8. Message-Id: <9003221312.AA14317@ROCKY2.ROCKEFELLER.EDU>
  9. To: werner@rascal.ics.utexas.edu
  10. Subject: scsiDocs-Part2 of 7.
  11. Date: Thu, 22 Mar 90 08:12:45 -0500
  12. From: coffin@ROCKY2.ROCKEFELLER.EDU
  13.  
  14.  
  15.  
  16. .fo Section 5                            #
  17. 5. Logical Characteristics
  18.  
  19. 5.1 SCSI Bus Phases.  The SCSI architecture includes eight distinct phases:
  20.  
  21.   BUS FREE phase
  22.   ARBITRATION phase
  23.   SELECTION phase
  24.   RESELECTION phase
  25.   COMMAND phase  \
  26.   DATA phase      \   These phases are collectively termed the
  27.   STATUS phase    /   information transfer phases.
  28.   MESSAGE phase  /
  29.  
  30.   The SCSI bus can never be in more than one phase at any given time.  Unless 
  31. otherwise noted in the following descriptions, signals that are not mentioned 
  32. shall not be asserted.
  33.  
  34.   5.1.1 BUS FREE Phase.  The BUS FREE phase is used to indicate that no SCSI 
  35. device is actively using the SCSI bus and that it is available for subsequent 
  36. users.
  37.  
  38.   SCSI devices shall detect the BUS FREE phase after SEL and BSY are both 
  39. false for at least a bus settle delay.
  40.  
  41.   SCSI devices shall release all SCSI bus signals within a bus clear delay 
  42. after BSY and SEL become continuously false for a bus settle delay.  If an 
  43. SCSI device requires more than a bus settle delay to detect the BUS FREE phase 
  44. then it shall release all SCSI bus signals within a bus clear delay minus the 
  45. excess time to detect the BUS FREE phase.  The total time to clear the SCSI 
  46. bus shall not exceed a bus settle delay plus a bus clear delay.
  47.  
  48.   5.1.2 ARBITRATION Phase.  The ARBITRATION phase allows one SCSI device to 
  49. gain control of the SCSI bus so that it can assume the role of an initiator or 
  50. target.
  51.  
  52. NOTE:  Implementation of the ARBITRATION phase is a system option.  Systems 
  53. that do not implement this option can have only one initiator.  The 
  54. ARBITRATION phase is required for systems that use the RESELECTION phase.
  55.  
  56.   The procedure for an SCSI device to obtain control of the SCSI bus is as 
  57. follows:
  58.  
  59.   (1)  The SCSI device shall first wait for the BUS FREE phase to occur.  The 
  60. BUS FREE phase is detected whenever both BSY and SEL are simultaneously and 
  61. continuously false for a minimum of a bus settle delay.  (Implementors Note:  
  62. This bus settle delay is necessary because a transmission line phenomenon 
  63. known as a "wire-OR glitch" may cause BSY to briefly appear false, even though 
  64. it is being driven true.)
  65.  
  66.   (2)  The SCSI device shall wait a minimum of a bus free delay after 
  67. detection of the BUS FREE phase (i.e. after BSY and SEL are both false for a 
  68. bus settle delay) before driving any signal.
  69.  
  70.   (3)  Following the bus free delay in Step (2), the SCSI device may arbitrate 
  71. for the SCSI bus by asserting both BSY and its own SCSI ID, however the SCSI 
  72. device shall not arbitrate (i.e. assert BSY and its SCSI ID) if more than a 
  73.  
  74. bus set delay has passed since the BUS FREE phase was last observed.  
  75. (Implementors Note:  There is no maximum delay before asserting BSY and the 
  76. SCSI ID following the bus free delay in Step (2) as long as the bus remains in 
  77. the BUS FREE phase.  However, SCSI devices that delay longer than a bus settle 
  78. delay plus a bus set delay from the time when BSY and SEL first become false 
  79. may fail to participate in arbitration when competing with faster SCSI 
  80. devices.)
  81.  
  82.   (4)  After waiting at least an arbitration delay (measured from its 
  83. assertion of BSY) the SCSI device shall examine the DATA BUS.  If a higher 
  84. priority SCSI ID bit is true on the DATA BUS (DB(7) is the highest), then the 
  85. SCSI device has lost the arbitration and the SCSI device may release its 
  86. signals and return to Step (1).  If no higher priority SCSI ID bit is true on 
  87. the DATA BUS, then the SCSI device has won the arbitration and it shall assert 
  88. SEL.  Any other SCSI device that is participating in the ARBITRATION phase has 
  89. lost the arbitration and shall release BSY and its SCSI ID bit within a bus 
  90. clear delay after SEL becomes true.  An SCSI device that loses arbitration may 
  91. return to Step (1).
  92.  
  93.   (5)  The SCSI device that wins arbitration shall wait at least a bus clear 
  94. delay plus a bus settle delay after asserting SEL before changing any signals.
  95.  
  96. NOTE:  The SCSI ID bit is a single bit on the DATA BUS that corresponds to the 
  97. SCSI device's unique SCSI address.  All other seven DATA BUS bits shall be 
  98. released by the SCSI device.  Parity is not valid during the ARBITRATION 
  99. phase.  During the ARBITRATION phase, DB(P) may be undriven or driven to the 
  100. true state, but shall not be driven to the false state.
  101.  
  102.   5.1.3 SELECTION Phase.  The SELECTION phase allows an initiator to select a 
  103. target for the purpose of initiating some target function (e.g., READ or WRITE 
  104. command).
  105.  
  106. NOTE:  During the SELECTION phase the I/O signal shall be negated so that this 
  107. phase can be distinguished from the RESELECTION phase.
  108.  
  109.      5.1.3.1 Nonarbitrating Systems.  In systems with the ARBITRATION phase 
  110. not implemented, the initiator shall first detect the BUS FREE phase and then 
  111. wait a minimum of a bus clear delay.  Then, except in certain single initiator 
  112. environments with initiators employing the single initiator option (see 
  113. 5.1.3.4), the initiator shall assert the desired target's SCSI ID and its own 
  114. initiator SCSI ID on the DATA BUS.  After two deskew delays the initiator 
  115. shall assert SEL.
  116.  
  117.      5.1.3.2 Arbitrating Systems.  In systems with ARBITRATION phase 
  118. implemented, the SCSI device that won the arbitration has both BSY and SEL 
  119. asserted and has delayed at least a bus clear delay plus a bus settle delay 
  120. before ending the ARBITRATION phase.  The SCSI device that won the arbitration 
  121. becomes an initiator by releasing I/O.  Except in certain single initiator 
  122. environments with initiators employing the single initiator option (see 
  123. 5.1.3.4), the initiator shall set the DATA BUS to a value which is the OR of 
  124. its SCSI ID bit and the target's SCSI ID bit.  The initiator shall then wait 
  125. at least two deskew delays and release BSY.  The initiator shall then wait at 
  126. least a bus settle delay before looking for a response from the target.
  127.  
  128.      5.1.3.3 All Systems.  In all systems, the target shall determine that it 
  129. is selected when SEL and its SCSI ID bit are true and BSY and I/O are false 
  130.  
  131. for at least a bus settle delay.  The selected target may examine the DATA BUS 
  132. in order to determine the SCSI ID of the selecting initiator unless the 
  133. initiator employed the single initiator option (see 5.1.3.4).  The selected 
  134. target shall then assert BSY within a selection abort time of its most recent 
  135. detection of being selected; this is required for correct operation of the 
  136. timeout procedure.  In systems with parity implemented, the target shall not 
  137. respond to a selection if bad parity is detected.  Also, if more than two SCSI 
  138. ID bits are on the DATA BUS, the target shall not respond to selection.
  139.  
  140.   At least two deskew delays after the initiator detects BSY is true, it shall 
  141. release SEL and may change the DATA BUS.
  142.  
  143.      5.1.3.4 Single Initiator Option.  Initiators that do not implement the 
  144. RESELECTION phase and do not operate in the multiple initiator environment are 
  145. allowed to set only the target's SCSI ID bit during the SELECTION phase.  This 
  146. makes it impossible for the target to determine the initiator's SCSI ID.
  147.  
  148.      5.1.3.5 Selection Timeout Procedure.  Two optional selection timeout 
  149. procedures are specified for clearing the SCSI bus if the initiator waits a 
  150. minimum of a selection timeout delay and there has been no BSY response from 
  151. the target:
  152.  
  153.   (1) Optionally, the initiator shall assert the RST signal (see 5.2.2).
  154.   (2) Optionally, the initiator shall continue asserting SEL and shall release 
  155. the DATA BUS.  If the initiator has not detected BSY to be true after at least 
  156. a selection abort time plus two deskew delays, the initiator shall release SEL 
  157. allowing the SCSI bus to go to the BUS FREE phase.  SCSI devices shall ensure 
  158. that when responding to selection that the selection was still valid within a 
  159. selection abort time of their assertion of BSY.  Failure to comply with this 
  160. requirement could result in an improper selection (two targets connected to 
  161. the same initiator, wrong target connected to an initiator, or a target 
  162. connected to no initiator).
  163.  
  164.   5.1.4 RESELECTION Phase (Optional).  RESELECTION is an optional phase that 
  165. allows a target to reconnect to an initiator for the purpose of continuing 
  166. some operation that was previously started by the initiator but was suspended 
  167. by the target, (i.e., the target disconnected by allowing a BUS FREE phase to 
  168. occur before the operation was complete).
  169.  
  170.      5.1.4.1 RESELECTION.  RESELECTION can only be used in systems that have 
  171. ARBITRATION phase implemented.
  172.  
  173.   Upon completing the ARBITRATION phase, the winning SCSI device has both BSY 
  174. and SEL asserted and has delayed at least a bus clear delay plus a bus settle 
  175. delay.  The winning SCSI device becomes a target by asserting the I/O signal.  
  176. The winning SCSI device shall also set the DATA BUS to a value that is the OR 
  177. of its SCSI ID bit and the initiator's SCSI ID bit.  The target shall wait at 
  178. least two deskew delays and release BSY.  The target shall then wait at least 
  179. a bus settle delay before looking for a response from the initiator.
  180.  
  181.   The initiator shall determine that it is reselected when SEL, I/O, and its 
  182. SCSI ID bit are true and BSY is false for at least a bus settle delay.  The 
  183. reselected initiator may examine the DATA BUS in order to determine the SCSI 
  184. ID of the reselecting target.  The reselected initiator shall then assert BSY 
  185. within a selection abort time of its most recent detection of being 
  186. reselected; this is required for correct operation of the timeout procedure.  
  187.  
  188. In systems with parity implemented, the initiator shall not respond to a 
  189. RESELECTION if bad parity is detected.  Also, the initiator shall not respond 
  190. to a RESELECTION if more than two SCSI ID bits are on the DATA BUS. 
  191.  
  192.   After the target detects BSY, it shall also assert BSY and wait at least two 
  193. deskew delays and then release SEL.  The target may then change the I/O signal 
  194. and the DATA BUS.  After the reselected initiator detects SEL false, it shall 
  195. release BSY.  The target shall continue asserting BSY until the target is 
  196. ready to relinquish the SCSI bus.
  197.  
  198. NOTE:  When the target is asserting BSY, a transmission line phenomenon known 
  199. as a "wire-OR glitch" may cause BSY to appear false for up to a round-trip 
  200. propagation delay following the release of BSY by the initiator.  This is the 
  201. reason why the BUS FREE phase is recognized only after both BSY and SEL are 
  202. continuously false for a minimum of a bus settle delay.  Cables longer than 25 
  203. meters should not be used even if the chosen driver, receiver, and cable 
  204. provide adequate noise margins, because they increase the duration of the 
  205. glitch and could cause SCSI devices to inadvertently detect the BUS FREE 
  206. phase.
  207.  
  208.      5.1.4.2 RESELECTION Timeout Procedure.  Two optional RESELECTION timeout 
  209. procedures are specified for clearing the SCSI bus during a RESELECTION phase 
  210. if the target waits a minimum of a selection timeout period and there has been 
  211. no BSY response from the initiator: 
  212.  
  213.   (1) Optionally, the target shall assert the RST signal (see 5.2.2).
  214.   (2) Optionally, the target shall continue asserting SEL and I/O and shall 
  215. release all DATA BUS signals.  If the target has not detected BSY to be true 
  216. after at least a selection abort time plus two deskew delays, the target shall 
  217. release SEL and I/O allowing the SCSI bus to go to the BUS FREE phase.  SCSI 
  218. devices that respond to RESELECTION shall ensure that the RESELECTION was 
  219. still valid within a selection abort time of their assertion of BSY.  Failure 
  220. to comply with this requirement could result in an improper reselection (two 
  221. initiators connected to the same target or the wrong initiator connected to a 
  222. target).
  223.  
  224.   5.1.5 Information Transfer Phases.
  225.  
  226. NOTE:  The COMMAND, DATA, STATUS, and MESSAGE phases are all grouped together 
  227. as the information transfer phases because they are all used to transfer data 
  228. or control information via the DATA BUS.  The actual contents of the 
  229. information is beyond the scope of this section.
  230.  
  231.   The C/D, I/O, and MSG signals are used to distinguish between the different 
  232. information transfer phases.  (See Table 5-1.)  The target drives these three 
  233. signals and therefore controls all changes from one phase to another.  The 
  234. initiator can request a MESSAGE OUT phase by asserting ATN, while the target 
  235. can cause the BUS FREE phase by releasing MSG, C/D, I/O, and BSY.
  236.  
  237.  
  238.                                   Table 5-1
  239.                          Information Transfer Phases
  240.  
  241. ==============================================================================
  242.    Signal
  243. -----------
  244.  
  245. MSG C/D I/O   Phase Name          Direction Of Transfer         Comment
  246. ------------------------------------------------------------------------------
  247.  0   0   0    DATA OUT            Initiator to target     \     Data
  248.  0   0   1    DATA IN             Initiator from target   /     Phase
  249.  0   1   0    COMMAND             Initiator to target
  250.  0   1   1    STATUS              Initiator from target
  251.  1   0   0    *
  252.  1   0   1    *
  253.  1   1   0    MESSAGE OUT         Initiator to target     \     Message
  254.  1   1   1    MESSAGE IN          Initiator from target   /     Phase
  255. ==============================================================================
  256.  
  257. Key:  0 = False,  1 = True,  * = Reserved for future standardization.
  258.  
  259.   The information transfer phases use one or more REQ/ACK handshakes to 
  260. control the information transfer.  Each REQ/ACK handshake allows the transfer 
  261. of one byte of information.  During the information transfer phases BSY shall 
  262. remain true and SEL shall remain false.  Additionally, during the information 
  263. transfer phases, the target shall continuously envelope the REQ/ACK 
  264. handshake(s) with C/D, I/O, and MSG in such a manner that these control 
  265. signals are valid for a bus settle delay before the assertion of REQ of the 
  266. first handshake and remain valid until the negation of ACK at the end of the 
  267. last handshake.
  268.  
  269.      5.1.5.1 Asynchronous Information Transfer.  The target shall control the 
  270. direction of information transfer by means of the I/O signal.  When I/O is 
  271. true, information shall be transferred from the target to the initiator.  When 
  272. I/O is false, information shall be transferred from the initiator to the 
  273. target.
  274.  
  275.   If I/O is true (transfer to the initiator), the target shall first drive 
  276. DB(7-0,P) to their desired values, delay at least one deskew delay plus a 
  277. cable skew delay, then assert REQ.  DB(7-0,P) shall remain valid until ACK is 
  278. true at the target.  The initiator shall read DB(7-0,P) after REQ is true, 
  279. then signal its acceptance of the data by asserting ACK.  When ACK becomes 
  280. true at the target, the target may change or release DB(7-0,P) and shall 
  281. negate REQ.  After REQ is false the initiator shall then negate ACK.  After 
  282. ACK is false the target may continue the transfer by driving DB(7-0,P) and 
  283. asserting REQ, as described above.
  284.  
  285.   If I/O is false (transfer to the target) the target shall request 
  286. information by asserting REQ.  The initiator shall drive DB(7-0,P) to their 
  287. desired values, delay at least one deskew delay plus a cable skew delay and 
  288. assert ACK.  The initiator shall continue to drive DB(7-0,P) until REQ is 
  289. false.  When ACK becomes true at the target, the target shall read DB(7-0,P), 
  290. then negate REQ.  When REQ becomes false at the initiator, the initiator may 
  291. change or release DB(7-0,P) and shall negate ACK.  The target may continue the 
  292. transfer by asserting REQ, as described above.
  293.  
  294.      5.1.5.2 Synchronous Data Transfer (Optional).  Synchronous data transfer 
  295. is optional, and may be used only in the data phase if previously agreed to by 
  296. the initiator and target through the message system (see SYNCHRONOUS DATA 
  297. TRANSFER REQUEST message, 5.5.5).  The messages determine the use of 
  298. synchronous mode by both SCSI devices and establish a REQ/ACK offset and a 
  299. transfer period.
  300.  
  301.  
  302.   The REQ/ACK offset specifies the maximum number of REQ pulses that can be 
  303. sent by the target in advance of the number of ACK pulses received from the 
  304. initiator, establishing a pacing mechanism.  If the number of REQ pulses 
  305. exceeds the number of ACK pulses by the REQ/ACK offset, the target shall not 
  306. assert REQ until the next ACK pulse is received.  A requirement for successful 
  307. completion of the data phase is that the number of ACK and REQ pulses be 
  308. equal. 
  309.  
  310.   The target shall assert the REQ signal for a minimum of an assertion period. 
  311. The target shall wait at least the greater of a transfer period from the last 
  312. transition of REQ to true or a minimum of a negation period from the last 
  313. transition of REQ to false before asserting the REQ signal.
  314.  
  315.   The initiator shall send one pulse on the ACK signal for each REQ pulse 
  316. received.  The initiator shall assert the ACK signal for a minimum of an 
  317. assertion period.  The initiator shall wait at least the greater of a transfer 
  318. period from the last transition of ACK to true or for a minimum of a negation 
  319. period from the last transition of ACK to false before asserting the ACK 
  320. signal.
  321.  
  322.   If I/O is true (transfer to the initiator), the target shall first drive 
  323. DB(7-0,P) to their desired values, wait at least one deskew delay plus one 
  324. cable skew delay, then assert REQ.  DB(7-0,P) shall be held valid for a 
  325. minimum of one deskew delay plus one cable skew delay plus one hold time after 
  326. the assertion of REQ.  The target shall assert REQ for a minimum of an 
  327. assertion period.  The target may then negate REQ and change or release DB(7-
  328. 0,P).  The initiator shall read the value on DB(7-0,P) within one hold time of 
  329. the transition of REQ to true.  The initiator shall then respond with an ACK 
  330. pulse.
  331.  
  332.   If I/O is false (transfer to the target), the initiator shall transfer one 
  333. byte for each REQ pulse received.  After receiving a REQ pulse, the initiator 
  334. shall first drive DB(7-0,P) to their desired values, delay at least one deskew 
  335. delay plus one cable skew delay, then assert ACK.  The initiator shall hold 
  336. DB(7-0,P) valid for at least one deskew delay plus one cable skew delay plus 
  337. one hold time after the assertion of ACK.  The initiator shall assert ACK for 
  338. a minimum of an assertion period.  The initiator may then negate ACK and may 
  339. change or release DB(7-0,P).  The target shall read the value of DB(7-0,P) 
  340. within one hold time of the transition of ACK to true.
  341.  
  342.   5.1.6 COMMAND Phase.  The COMMAND phase allows the target to request command 
  343. information from the initiator.
  344.  
  345.   The target shall assert the C/D signal and negate the I/O and MSG signals 
  346. during the REQ/ACK handshake(s) of this phase.
  347.  
  348.   5.1.7 Data Phase.  The data phase is a term that encompasses both the DATA 
  349. IN phase and the DATA OUT phase.
  350.  
  351.      5.1.7.1 DATA IN Phase.  The DATA IN phase allows the target to request 
  352. that data be sent to the initiator from the target.
  353.  
  354.   The target shall assert the I/O signal and negate the C/D and MSG signals 
  355. during the REQ/ACK handshake(s) of this phase.
  356.  
  357.      5.1.7.2 DATA OUT Phase.  The DATA OUT phase allows the target to request 
  358.  
  359. that data be sent from the initiator to the target.
  360.  
  361.   The target shall negate the C/D, I/O, and MSG signals during the REQ/ACK 
  362. handshake(s) of this phase.
  363.  
  364.   5.1.8 STATUS Phase.  The STATUS phase allows the target to request that 
  365. status information be sent from the target to the initiator.
  366.  
  367.   The target shall assert C/D and I/O and negate the MSG signal during the 
  368. REQ/ACK handshake of this phase.
  369.  
  370.   5.1.9 Message Phase.  The message phase is a term that references either a 
  371. MESSAGE IN, or a MESSAGE OUT phase.  Multiple messages may be sent during 
  372. either phase.  The first byte transferred in either of these phases shall be 
  373. either a single-byte message or the first byte of a multiple-byte message.  
  374. Multiple-byte messages shall be wholly contained within a single message 
  375. phase.
  376.  
  377.      5.1.9.1 MESSAGE IN Phase.  The MESSAGE IN phase allows the target to 
  378. request that message(s) be sent to the initiator from the target.
  379.  
  380.   The target shall assert C/D, I/O, and MSG during the REQ/ACK handshake(s) of 
  381. this phase.
  382.  
  383.      5.1.9.2 MESSAGE OUT Phase.  The MESSAGE OUT phase allows the target to 
  384. request that message(s) be sent from the initiator to the target.  The target 
  385. may invoke this phase at its convenience in response to the ATTENTION 
  386. condition (see 5.2.1) created by the initiator.
  387.  
  388.   The target shall assert C/D and MSG and negate I/O during the REQ/ACK 
  389. handshake(s) of this phase.  The target shall handshake byte(s) in this phase 
  390. until ATN goes false, unless an error occurs (see MESSAGE REJECT, 5.5.2).
  391.  
  392.   If the target detects one or more parity error(s) on the message byte(s) 
  393. received, it may indicate its desire to retry the message(s) by asserting REQ 
  394. after detecting ATN has gone false and prior to changing to any other phase.  
  395. The initiator, upon detecting this condition, shall resend all of the previous 
  396. message byte(s) sent during this phase.  When resending more than one message 
  397. byte, the initiator shall assert ATN prior to asserting ACK on the first byte 
  398. and shall maintain ATN asserted until the last byte is sent as described in 
  399. 5.2.1.
  400.  
  401.   If the target receives all of the message byte(s) successfully (i.e., no 
  402. parity errors), it shall indicate that it does not wish to retry by changing 
  403. to any information transfer phase other than the MESSAGE OUT phase and 
  404. transfer at least one byte.  The target may also indicate that it has 
  405. successfully received the message byte(s) by changing to the BUS FREE phase 
  406. (e.g., ABORT or BUS DEVICE RESET messages).
  407.  
  408.   5.1.10 Signal Restrictions Between Phases.  When the SCSI bus is between two 
  409. information transfer phases, the following restrictions shall apply to the 
  410. SCSI bus signals:
  411.  
  412.   (1) The BSY, SEL, REQ, and ACK signals shall not change.
  413.   (2) The C/D, I/O, MSG, and DATA BUS signals may change.  When switching the 
  414. DATA BUS direction from out (initiator driving) to in (target driving), the 
  415.  
  416. target shall delay driving the DATA BUS by at least a data release delay plus 
  417. a bus settle delay after asserting the I/O signal and the initiator shall 
  418. release the DATA BUS no later than a data release delay after the transition 
  419. of the I/O signal to true.  When switching the DATA BUS direction from in 
  420. (target driving) to out (initiator driving), the target shall release the DATA 
  421. BUS no later than a deskew delay after negating the I/O signal.
  422.   (3) The ATN and RST signals may change as defined under the descriptions for 
  423. the ATTENTION condition (5.2.1) and RESET condition (5.2.2).
  424.  
  425. 5.2 SCSI Bus Conditions.  The SCSI bus has two asynchronous conditions; the 
  426. ATTENTION condition and the RESET condition.  These conditions cause the SCSI 
  427. device to perform certain actions and can alter the phase sequence.
  428.  
  429.   5.2.1 ATTENTION Condition.  The ATTENTION condition allows an initiator to 
  430. inform a target that the initiator has a message ready.  The target may get 
  431. this message at its convenience by performing a MESSAGE OUT phase.
  432.  
  433.   The initiator creates the ATTENTION condition by asserting ATN at any time 
  434. except during the ARBITRATION or BUS FREE phases.
  435.  
  436.   The target may respond with the MESSAGE OUT phase.
  437.  
  438.   The initiator shall keep ATN asserted if more than one byte is to be 
  439. transferred.  The initiator may negate the ATN signal at any time except it
  440. shall not negate the ATN signal while the ACK signal is asserted during a 
  441. MESSAGE OUT phase.  Normally, the initiator negates ATN while REQ is true and 
  442. ACK is false during the last REQ/ACK handshake of the MESSAGE OUT phase.
  443.  
  444.   5.2.2 RESET Condition.  The RESET condition is used to immediately clear all 
  445. SCSI devices from the bus.  This condition shall take precedence over all 
  446. other phases and conditions.  Any SCSI device may create the RESET condition 
  447. by asserting RST for a minimum of a reset hold time.  During the RESET 
  448. condition, the state of all SCSI bus signals other than RST is not defined.
  449.  
  450.   All SCSI devices shall release all SCSI bus signals (except RST) within a 
  451. bus clear delay of the transition of RST to true.  The BUS FREE phase always 
  452. follows the RESET condition.
  453.  
  454.   The effect of the RESET condition on uncompleted commands, SCSI device 
  455. reservations, and SCSI device operating modes is determined by whether the 
  456. SCSI device has implemented the "hard" RESET option or the "soft" RESET option 
  457. (one of which shall be implemented) as defined in 5.2.2.1 and 5.2.2.2.
  458.  
  459.      5.2.2.1 "Hard" RESET Option.  SCSI devices that implement the "hard" 
  460. RESET option, upon detection of the RESET condition, shall:
  461.  
  462.   (1) Clear all uncompleted commands
  463.   (2) Release all SCSI device reservations
  464.   (3) Return any SCSI device operating modes (MODE SELECT, PREVENT/ALLOW 
  465. MEDIUM REMOVAL commands, etc) to their default conditions.
  466.  
  467.      5.2.2.2 "Soft" RESET Option.  SCSI devices that implement the "soft" 
  468. RESET option, upon detection of the RESET condition, shall:
  469.  
  470.   (1) Attempt to complete any uncompleted commands that were fully identified
  471.   (2) Preserve all SCSI device reservations
  472.  
  473.   (3) Preserve any SCSI device operating modes (MODE SELECT, PREVENT/ALLOW 
  474. MEDIUM REMOVAL commands, etc)
  475.  
  476.   The "soft" RESET option allows a single initiator to reset the SCSI bus 
  477. without disturbing the operation of other initiators in a multiple initiator 
  478. system.  To ensure proper operation the following conditions shall be met:
  479.  
  480.   (1) An initiator shall not consider a command to be fully identified until 
  481. the IDENTIFY message is sent to the target and the target responds by changing 
  482. to any other information transfer phase and requests that at least one byte be 
  483. transferred.
  484.  
  485.   (2) A target shall consider a command to be fully identified when it 
  486. successfully receives the IDENTIFY message.
  487.  
  488.   (3) If an initiator selects a logical unit for which there already is an 
  489. active command for the same initiator, the target shall clear the original 
  490. command and perform the new command.
  491.  
  492.   (4) If a target reselects an initiator to continue a command for which the 
  493. initiator has no record, the initiator shall abort that command by sending the 
  494. ABORT message.
  495.  
  496.   (5) An initiator shall consider a command to be completed when it negates 
  497. ACK for a successfully received COMMAND COMPLETE message.
  498.  
  499.   (6) A target shall consider a command to be completed when it detects the 
  500. false transition of ACK for the COMMAND COMPLETE message with the ATN signal 
  501. false.
  502.  
  503.   (7) An initiator shall not negate ACK for the SAVE DATA POINTER message 
  504. until it has actually saved the data pointer for the operation.
  505.  
  506.   (8) A target shall consider the data pointer to be saved when it detects the 
  507. false transition of ACK for the SAVE DATA POINTER message with the ATN signal 
  508. false.
  509.  
  510.   (9) If the RESET condition occurs between the time that the target asserts 
  511. REQ for the SAVE DATA POINTER message and it detects the false transition of 
  512. ACK, the target shall terminate the command with a CHECK CONDITION status.  If 
  513. extended sense is implemented, the target shall set the sense key to ABORTED 
  514. COMMAND.  This is necessary because the target cannot determine whether the 
  515. data pointer has actually been saved.
  516.  
  517. NOTE:  If the ATN signal is true in conditions (6) or (8), the target would 
  518. normally switch to MESSAGE OUT phase and attempt to transfer a message byte.  
  519. If the RESET condition  occurs before it is able to successfully receive the 
  520. message byte, the target shall assume that the initiator may not have 
  521. successfully received the COMMAND COMPLETE message or the SAVE DATA POINTER 
  522. message.  In the case of COMMAND COMPLETE message, the target shall reselect 
  523. the initiator and attempt to send the COMMAND COMPLETE message again.  In the 
  524. case of the SAVE DATA POINTER message, the target shall reselect the initiator 
  525. and terminate the command as described in condition (9).
  526.  
  527. 5.3 SCSI Bus Phase Sequences.  The order in which phases are used on the SCSI 
  528. bus follows a prescribed sequence.
  529.  
  530.  
  531.   In all systems, the RESET condition can abort any phase and is always 
  532. followed by the BUS FREE phase.  Also, any other phase can be followed by the 
  533. BUS FREE phase.
  534.  
  535.   5.3.1 Nonarbitrating Systems.  In systems where the ARBITRATION phase is not 
  536. implemented, the allowable sequences shall be as shown in Figure 5-1.  The 
  537. normal progression is from the BUS FREE phase to SELECTION, and from SELECTION 
  538. to one or more of the information transfer phases (COMMAND, DATA, STATUS, or 
  539. MESSAGE).
  540.  
  541.   5.3.2 Arbitrating Systems.  In systems where the ARBITRATION phase is 
  542. implemented, the allowable sequences shall be as shown in Figure 5-2.  The 
  543. normal progression is from the BUS FREE phase to ARBITRATION, from ARBITRATION 
  544. to SELECTION or RESELECTION, and from SELECTION or RESELECTION to one or more 
  545. of the information transfer phases (COMMAND, DATA, STATUS, or MESSAGE).
  546.  
  547.   5.3.3 All Systems.  There are no restrictions on the sequences between 
  548. information transfer phases.  A phase type may even be followed by the same 
  549. phase type (e.g., a data phase may be followed by another data phase).
  550. .pa
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.                Figure 5-1. Phase Sequences without Arbitration
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.                  Figure 5-2. Phase Sequences with Arbitration
  607. .pa
  608.  
  609. 5.4 SCSI Pointers.  Consider the system shown in Figure 5-3 in which an 
  610. initiator and target communicate on the SCSI bus in order to execute a 
  611. command. 
  612.  
  613.  
  614.  
  615.      -------------------------                 -------------------------
  616.      | Function | | Initiator|-----------------| Target   | | Function |
  617.      | Origin   | | Path     |    SCSI BUS     | Path     | | Execution|
  618.      |          | | Control  |-----------------| Control  | |          |
  619.      -------------------------                 -------------------------
  620.  
  621.              Initiator                                   Target
  622.  
  623.                       Figure 5-3. Simplified SCSI System
  624.  
  625.  
  626.   The SCSI architecture provides for two sets of three pointers within each 
  627. initiator.  The pointers reside in the initiator path control.  The first set 
  628. of pointers are known as the current (or active) pointers.  These pointers are 
  629. used to represent the state of the interface and point to the next command, 
  630. data, or status byte to be transferred between the initiator's memory and the 
  631. target.  There is only one set of current pointers in each initiator.  The 
  632. current pointers are used by the target currently connected to the initiator.
  633.  
  634.   The second set of pointers are known as the saved pointers.  There is one 
  635. set of saved pointers for each command that is currently active (whether or 
  636. not it is currently connected).  The saved command pointer always points to 
  637. the start of the command descriptor block (see 6.2) for the current command.  
  638. The saved status pointer always points to the start of the status area for the 
  639. current command.  At the beginning of each command, the saved data pointer 
  640. points to the start of the data area.  It remains at this value until the 
  641. target sends a SAVE DATA POINTER message (see 5.5.2) to the initiator.  In 
  642. response to this message, the initiator stores the value of the current data 
  643. pointer into the saved data pointer.  The target may restore the current 
  644. pointers to their saved values by sending a RESTORE POINTERS message (see 
  645. 5.5.2) to the initiator.  The initiator moves the saved value of each pointer 
  646. into the corresponding current pointer.  Whenever an SCSI device disconnects 
  647. >From the bus, only the saved pointer values are retained.  The current pointer 
  648. values are restored from the saved values upon the next reconnection.
  649.  
  650. 5.5 Message System Specification.  The message system allows communication 
  651. between an initiator and target for the purpose of physical path management.
  652.  
  653. 5.5.1 Message Protocol.  All SCSI devices shall implement the COMMAND COMPLETE 
  654. message.  A functional SCSI device can be constructed without using any of the 
  655. other messages if the logical unit number is specified in the command 
  656. descriptor block.  The remainder of this section deals with the additional 
  657. requirements on SCSI devices that support messages other than COMMAND 
  658. COMPLETE.
  659.  
  660.   SCSI devices indicate their ability to accommodate more than the COMMAND 
  661. COMPLETE message by asserting or responding to the ATN signal.  The initiator 
  662. indicates this in the SELECTION phase by asserting ATN prior to the SCSI bus 
  663. condition of SEL true, and BSY false.  The target indicates its ability to 
  664. accommodate more messages by responding to the ATTENTION condition with the 
  665.  
  666. MESSAGE OUT phase after going through the SELECTION phase. 
  667.  
  668. For SCSI devices that support messages other than COMMAND COMPLETE, the first 
  669. message sent by the initiator after the SELECTION phase shall be the IDENTIFY 
  670. message.  This allows the establishment of the physical path for a particular 
  671. logical unit specified by the initiator.  After the RESELECTION phase, the 
  672. target's first message shall be IDENTIFY.  This allows the physical path to be 
  673. reestablished for the target's specified logical unit number.  Under some 
  674. exceptional conditions, an initiator may send the ABORT message or the BUS 
  675. DEVICE RESET message instead of the IDENTIFY message, as the first message.  
  676. Only one logical unit number shall be identified for any one selection 
  677. sequence; a second IDENTIFY message with a new logical unit number shall not 
  678. be issued before the SCSI bus has been released (BUS FREE phase).
  679.  
  680.   Whenever a physical path is established in an initiator that can accommodate 
  681. disconnection and reconnection, the initiator shall ensure that the active 
  682. pointers of the physical path are equal to the saved pointers for that 
  683. particular logical unit number.  (An implied restore pointers operation occurs 
  684. as a result of connect or reconnect.)
  685.  
  686.   SCSI devices that implement any message other than the COMMAND COMPLETE 
  687. message shall also implement the MESSAGE REJECT message.
  688.  
  689.  
  690.                                   Table 5-2
  691.                                 Message Codes
  692.  
  693. ==============================================================================
  694. Code      Type   Description                             Direction
  695. ------------------------------------------------------------------------------
  696. 00H        M     COMMAND COMPLETE                        In
  697. 01H        O     EXTENDED MESSAGE                        In   Out
  698. 02H        O     SAVE DATA POINTER                       In
  699. 03H        O     RESTORE POINTERS                        In
  700. 04H        O     DISCONNECT                              In
  701. 05H        O     INITIATOR DETECTED ERROR                     Out
  702. 06H        O     ABORT                                        Out
  703. 07H        O     MESSAGE REJECT                          In   Out
  704. 08H        O     NO OPERATION                                 Out
  705. 09H        O     MESSAGE PARITY ERROR                         Out
  706. 0AH        O     LINKED COMMAND COMPLETE                 In
  707. 0BH        O     LINKED COMMAND COMPLETE (WITH FLAG)     In
  708. 0CH        O     BUS DEVICE RESET                             Out
  709. 0DH _ 7FH  R     Reserved Codes
  710. 80H _ FFH  O     IDENTIFY                                In   Out
  711. ==============================================================================
  712.  
  713. Key:  In = Target to initiator,  Out = Initiator to target.
  714.  
  715.  
  716.   5.5.2 Messages.  The single byte messages (Table 5-2) are listed along with 
  717. their code values and their definitions.
  718.  
  719. COMMAND COMPLETE 00H (Mandatory).  This message is sent from a target to an 
  720. initiator to indicate that the execution of a command (or series of linked 
  721. commands) has terminated and that valid status has been sent to the initiator.  
  722.  
  723. After successfully sending this message, the target shall go to the BUS FREE 
  724. phase by releasing BSY.
  725.  
  726. NOTE:  The command may have been executed successfully or unsuccessfully as 
  727. indicated in the status.
  728.  
  729. EXTENDED MESSAGE 01H (Optional).  This message is sent from either the 
  730. initiator or the target as the first byte of a multiple-byte message.  (See 
  731. 5.5.3 for descriptions of extended messages.)
  732.  
  733. SAVE DATA POINTER 02H (Optional).  This message is sent from a target to 
  734. direct the initiator to save a copy of the present active data pointer for the 
  735. currently attached logical unit.  (See 5.4 for a definition of pointers.)
  736.  
  737. RESTORE POINTERS 03H (Optional).  This message is sent from a target to direct 
  738. the initiator to restore the most recently saved pointers (for the currently 
  739. attached logical unit) to the active state.  Pointers to the command, data, 
  740. and status locations for the logical unit shall be restored to the active 
  741. pointers.  Command and status pointers shall be restored to the beginning of 
  742. the present command and status areas.  The data pointer shall be restored to 
  743. the value at the beginning of the data area in the absence of a SAVE DATA 
  744. POINTER message or to the value at the point at which the last SAVE DATA 
  745. POINTER message occurred for that logical unit.
  746.  
  747. DISCONNECT 04H (Optional).  This message is sent from a target to inform an 
  748. initiator that the present physical path is going to be broken (the target 
  749. plans to  disconnect by releasing BSY), but that a later reconnect will be 
  750. required in order to complete the current operation.  If the initiator detects 
  751. the BUS FREE phase (other than as a result of a RESET condition) without first 
  752. receiving a DISCONNECT or COMMAND COMPLETE message, the initiator shall 
  753. consider this as a catastrophic error condition.  If the target intentionally 
  754. creates this condition, the target shall clear the current command.  This 
  755. message shall not cause the initiator to save the data pointer.  Note:  If 
  756. DISCONNECT messages are used break a long data transfer into two or more 
  757. shorter transfers, then a SAVE DATA POINTER should be issued before each 
  758. DISCONNECT message.
  759.  
  760. INITIATOR DETECTED ERROR 05H (Optional).  This message is sent from an 
  761. initiator to inform a target that an error (e.g., parity error) has occurred 
  762. that does not preclude the target from retrying the operation.  Although 
  763. present pointer integrity is not assured, a RESTORE POINTERS message or a 
  764. disconnect followed by a reconnect, shall cause the pointers to be restored to 
  765. their defined prior state.
  766.  
  767. ABORT 06H (Optional).  This message is sent from the initiator to the target 
  768. to clear the present operation.  If a logical unit has been identified, all 
  769. pending data and status for the issuing initiator from the effected logical 
  770. unit shall be cleared, and the target shall go to the BUS FREE phase.  Pending 
  771. data and status for other initiators shall not be cleared.  If a logical unit 
  772. has not been identified, the target shall go to the BUS FREE phase.  No status 
  773. or ending message shall be sent for the operation.  It is not an error to 
  774. issue this message to an logical unit that is not currently performing an 
  775. operation for the initiator.
  776.  
  777. MESSAGE REJECT 07H (Optional).  This message is sent from either the initiator 
  778. or target to indicate that the last message it received was inappropriate or 
  779.  
  780. has not been implemented.
  781.  
  782.   In order to indicate its intentions of sending this message, the initiator 
  783. shall assert the ATN signal prior to its release of ACK for the REQ/ACK 
  784. handshake of the message that is to be rejected.  When a target sends this 
  785. message, it shall change to MESSAGE IN phase and send this message prior to 
  786. requesting additional message bytes from the initiator.  This provides an 
  787. interlock so that the initiator can determine which message is rejected.
  788.  
  789.   This message shall be implemented if any other optional messages are 
  790. implemented. 
  791.  
  792. NO OPERATION 08H (Optional).  This message is sent from an initiator in 
  793. response to a target's request for a message when the initiator does not 
  794. currently have any other valid message to send.
  795.  
  796. MESSAGE PARITY ERROR 09H (Optional).  This message is sent from the initiator 
  797. to the target to indicate that one or more bytes in the last message it 
  798. received had a parity error.
  799.  
  800.   In order to indicate its intentions of sending this message, the initiator 
  801. shall assert the ATN signal prior to its release of ACK for the REQ/ACK 
  802. handshake of the message that has the parity error.  This provides an 
  803. interlock so that the target can determine which message has the parity error.
  804.  
  805. LINKED COMMAND COMPLETE 0AH (Optional).  This message is sent from a target to 
  806. an initiator to indicate that the execution of a linked command has completed 
  807. and that status has been sent.  The initiator shall then set the pointers to 
  808. the initial state for the next linked command.
  809.  
  810. LINKED COMMAND COMPLETE (WITH FLAG) 0BH (Optional).  This message is sent from 
  811. a target to an initiator to indicate that the execution of a linked command 
  812. (with the flag bit set to one) has completed and that status has been sent.  
  813. The initiator shall then set the pointers to the initial state of the next 
  814. linked command.  Typically this message would be used to cause an interrupt in 
  815. the initiator between two linked commands.
  816.  
  817. BUS DEVICE RESET 0CH (Optional).  This message is sent from an initiator to 
  818. direct a target to clear all current commands on that SCSI device.  This 
  819. message forces the SCSI device to an initial state with no operations pending 
  820. for any initiator.  Upon recognizing this message, the target shall go to the 
  821. BUS FREE phase.
  822.  
  823. Reserved 0DH to 7FH.  These message codes are reserved for future 
  824. standardization.
  825.  
  826. IDENTIFY 80H to FFH (Optional).  These messages are sent by either the 
  827. initiator or the target to establish the physical path connection between an 
  828. initiator and target for a particular logical unit.
  829.  
  830.   Bit 7.  This bit is always set to one to distinguish these messages from the 
  831. other messages.
  832.  
  833.   Bit 6.  This bit is only set to one by the initiator.  When set to one, it 
  834. indicates that the initiator has the ability to accommodate disconnection and 
  835. reconnection.
  836.  
  837.  
  838.   Bits 5-3.  Reserved.
  839.  
  840.   Bits 2-0.  These bits specify a logical unit number in a target.
  841.  
  842.   Only one logical unit number shall be identified for any one selection 
  843. sequence; a second IDENTIFY message with a new logical unit number shall not 
  844. be issued before the bus has been released (BUS FREE phase).
  845.  
  846.   When sent from a target to an initiator during reconnection, an implied 
  847. RESTORE POINTERS message shall be performed by the initiator prior to 
  848. completion of this message.
  849.  
  850.   5.5.3 Extended Messages (Optional).  A value of one in the first byte of a 
  851. message indicates the beginning of a multiple-byte extended message.  The 
  852. minimum number of bytes sent for an extended message is three.  The extended 
  853. message format and the extended message codes are shown in Tables 5-3 and 5-4, 
  854. respectively.
  855.  
  856.                                   Table 5-3
  857.                            Extended Message Format
  858.  
  859. ==============================================================================
  860.  Byte     |  Value   |   Description                                         |
  861. ==============================================================================
  862.   0       |   01H    |   Extended message                                    |
  863. ----------|----------|-------------------------------------------------------|
  864.   1       |    nH    |   Extended message length                             |
  865. ----------|----------|-------------------------------------------------------|
  866.   2       |    yH    |   Extended message code                               |
  867. ----------|----------|-------------------------------------------------------|
  868. 3 _ nH+1  |    xH    |   Extended message arguments                          |
  869. ==============================================================================
  870.  
  871.   The extended message length specifies the length in bytes of the extended 
  872. message code plus the extended message arguments to follow.  Therefore, the 
  873. total length of the message is equal to the extended message length plus two.  
  874. A value of zero for the extended message length indicates 256 bytes follow.
  875.  
  876.   The extended message codes are listed in Table 5-4.  The extended message 
  877. arguments are specified for the defined extended messages in Sections 5.5.4 
  878. through 5.5.6.
  879.  
  880.                                   Table 5-4
  881.                             Extended Message Codes
  882.  
  883. ==============================================================================
  884. Code (yH)      Description
  885. ------------------------------------------------------------------------------
  886. 00H            MODIFY DATA POINTER (Optional) 
  887. 01H            SYNCHRONOUS DATA TRANSFER REQUEST (Optional) 
  888. 02H            EXTENDED IDENTIFY (Optional) 
  889. 03H _ 7FH      Reserved
  890. 80H _ FFH      Vendor Unique
  891. ==============================================================================
  892. .pa
  893.  
  894.   5.5.4 MODIFY DATA POINTER Message (Optional)
  895.  
  896.                                   Table 5-5
  897.                              MODIFY DATA POINTER
  898.  
  899. ==============================================================================
  900. Byte |  Value  |    Description                                              |
  901. ==============================================================================
  902.  0   |   01H   |    Extended message                                         |
  903. -----|---------|-------------------------------------------------------------|
  904.  1   |   05H   |    Extended message length                                  |
  905. -----|---------|-------------------------------------------------------------|
  906.  2   |   00H   |    MODIFY DATA POINTER code                                 |
  907. -----|---------|-------------------------------------------------------------|
  908.  3   |    xH   |    Argument (MSB)                                           |
  909. -----|---------|-------------------------------------------------------------|
  910.  4   |    xH   |    Argument                                                 |
  911. -----|---------|-------------------------------------------------------------|
  912.  5   |    xH   |    Argument                                                 |
  913. -----|---------|-------------------------------------------------------------|
  914.  6   |    xH   |    Argument (LSB)                                           |
  915. ==============================================================================
  916.  
  917.   The MODIFY DATA POINTER message (Table 5-5) is sent from the target to the 
  918. initiator and requests that the signed argument be added (two's complement) to 
  919. the value of the current data pointer.
  920.  
  921.   5.5.5 SYNCHRONOUS DATA TRANSFER REQUEST Message (Optional)
  922.  
  923.                                   Table 5-6
  924.                       SYNCHRONOUS DATA TRANSFER REQUEST
  925.  
  926. ==============================================================================
  927. Byte |  Value  |    Description                                              |
  928. ==============================================================================
  929.  0   |   01H   |    Extended message                                         |
  930. -----|---------|-------------------------------------------------------------|
  931.  1   |   03H   |    Extended message length                                  |
  932. -----|---------|-------------------------------------------------------------|
  933.  2   |   01H   |    SYNCHRONOUS DATA TRANSFER REQUEST code                   |
  934. -----|---------|-------------------------------------------------------------|
  935.  3   |    mH   |    Transfer period (mH times 4 nanoseconds)                 |
  936. -----|---------|-------------------------------------------------------------|
  937.  4   |    xH   |    REQ/ACK offset                                           |
  938. ==============================================================================
  939.  
  940.   A pair of SYNCHRONOUS DATA TRANSFER REQUEST messages (Table 5-6) are 
  941. exchanged between an initiator and a target whenever an SCSI device that can 
  942. support synchronous data transfer recognizes that it has not communicated with 
  943. the other SCSI device since receiving the last "hard" RESET condition or a BUS 
  944. DEVICE RESET message.  The SCSI devices may also exchange messages to 
  945. establish synchronous data transfer when requested to do so.  The message 
  946. exchange establishes the transfer period and the REQ/ACK offset.  The transfer 
  947. period is the minimum time between leading edges of successive REQ pulses and 
  948. of successive ACK pulses.  
  949.  
  950.  
  951.   The REQ/ACK offset is the maximum number of REQ pulses that may be 
  952. outstanding before its corresponding ACK pulse is received at the target.  A 
  953. REQ/ACK offset value of zero shall indicate asynchronous mode; a value of FFH 
  954. shall indicate unlimited offset.
  955.  
  956.   If the initiator recognizes that negotiation is required, it asserts  ATN 
  957. and, if the target implements message transfers, sends a SYNCHRONOUS DATA 
  958. TRANSFER REQUEST message indicating an REQ/ACK offset and minimum transfer 
  959. period.  The REQ/ACK offset is chosen to prevent initiator buffer overflows, 
  960. while the minimum transfer period is chosen to meet the data handling 
  961. requirements of the initiator.  The target responds in any of the following 
  962. ways:
  963.  
  964. Target Response                         Implied Agreement
  965. -------------------------------------   --------------------------------------
  966. (1) REQ/ACK offset less than or equal   REQ/ACK offset equal to target value.
  967.     to the requested value.
  968.     Minimum transfer period equal to    Minimum transfer period equal to 
  969.     or greater than requested period.   the target value.
  970.  
  971. (2) REQ/ACK offset equal to zero.       Asynchronous transfer.
  972.  
  973. (3) MESSAGE REJECT.                     Asynchronous transfer.
  974.  
  975.   If the target recognizes that negotiation is required, it sends a 
  976. SYNCHRONOUS DATA TRANSFER REQUEST message to the initiator.  The REQ/ACK 
  977. offset is selected to prevent buffer and offset counter overflows, while the 
  978. minimum transfer period is chosen to meet the data handling requirements of 
  979. the target.  The initiator responds in any of the following ways if the target 
  980. chooses an REQ/ACK offset equal to FFH:
  981.  
  982. Initiator Response                      Implied Agreement
  983. -------------------------------------   --------------------------------------
  984. (1) REQ/ACK offset equal to FFH.        REQ/ACK offset unlimited.
  985.     Minimum transfer period equal to    Minimum transfer period equal to
  986.     or greater than requested period.   the initiator value.
  987.  
  988. (2) REQ/ACK offset equal to 00H.        Asynchronous transfer.  The target may 
  989.                                         renegotiate for an REQ/ACK offset less 
  990.                                         than FFH and greater than 00H.
  991.  
  992. (3) MESSAGE REJECT.                     Asynchronous transfer.
  993.  
  994.   The initiator responds in any of the following ways if the target selects an 
  995. REQ/ACK offset less than FFH:
  996.  
  997. Initiator Response                      Implied Agreement
  998. -------------------------------------   --------------------------------------
  999. (1) REQ/ACK offset less than or equal   REQ/ACK offset equals initiator value.
  1000.    to the requested value.
  1001.    Minimum transfer period equal to     Minimum transfer period equal to the
  1002.    or greater than requested value.     initiator value.
  1003.  
  1004. (2) REQ/ACK offset equal to zero.       Asynchronous transfer.
  1005.  
  1006. (3) MESSAGE REJECT.                     Asynchronous transfer.
  1007.  
  1008.  
  1009.   The implied agreement shall remain in effect until a BUS DEVICE RESET 
  1010. message is received, until a "hard" RESET condition occurs, or until one of 
  1011. the two SCSI devices elects to modify the agreement.  Renegotiation at every 
  1012. selection is not recommended, since a significant performance impact is 
  1013. likely.  The default mode of data transfer is asynchronous mode.  The default 
  1014. mode is entered at power on, after a BUS DEVICE RESET message, or after a 
  1015. "hard" RESET condition.  The SYNCHRONOUS DATA TRANSFER REQUEST message 
  1016. exchange can only take place following a SELECTION phase that includes the 
  1017. SCSI IDs for both the initiator and the target.  Violation of this rule may 
  1018. make data transfer impossible owing to disagreements among SCSI devices about 
  1019. the data transfer mode.
  1020.  
  1021.   5.5.6 EXTENDED IDENTIFY Message (Optional)
  1022.  
  1023.                                   Table 5-7
  1024.                               EXTENDED IDENTIFY
  1025.  
  1026. ==============================================================================
  1027. Byte |  Value  |    Description                                              |
  1028. ==============================================================================
  1029.  0   |   01H   |    Extended message                                         |
  1030. -----|---------|-------------------------------------------------------------|
  1031.  1   |   02H   |    Extended message length                                  |
  1032. -----|---------|-------------------------------------------------------------|
  1033.  2   |   02H   |    EXTENDED IDENTIFY code                                   |
  1034. -----|---------|-------------------------------------------------------------|
  1035.  3   |   xxH   |    Sub-logical unit number                                  |
  1036. ==============================================================================
  1037.  
  1038.   The EXTENDED IDENTIFY message (Table 5-7) is optional and may be sent by a 
  1039. target or an initiator.  It may be used in conjunction with the normal 
  1040. IDENTIFY message in order to expand the logical unit number addressing in a 
  1041. target.  The sub-logical unit number specifies the encoded eight-bit sub-
  1042. logical unit number used to identify one of 256 sub-logical units within the 
  1043. logical unit.  This allows up to 2048 units to be addressed on a single 
  1044. target.
  1045.  
  1046. 
  1047. .fo Section 6                            #
  1048. 6. SCSI Commands 
  1049.  
  1050. This section defines the SCSI command structure and gives several examples.
  1051.  
  1052.   The command definitions assume a data structure providing the appearance at 
  1053. the interface of a contiguous set of logical blocks of a fixed or explicitly 
  1054. defined data length.  The SCSI device maps the physical characteristics of the 
  1055. attached peripheral devices to one of several logical structures defined by 
  1056. the device type code.
  1057.  
  1058.   A single command may transfer one or more logical blocks of data.  Multiple 
  1059. commands may be linked if they are sent to the same logical unit.  A target 
  1060. may disconnect from the SCSI bus to allow activity by other SCSI devices while 
  1061. a logical unit is being prepared to transfer data.
  1062.  
  1063.   Upon command completion (successful or unsuccessful), the target returns a 
  1064. status byte to the initiator.  Since most error and exception conditions 
  1065. cannot be adequately described with a single status byte, one status code, 
  1066. CHECK CONDITION, indicates that additional information is available.  The 
  1067. initiator may issue a REQUEST SENSE command to retrieve this additional 
  1068. information. 
  1069.  
  1070.   By keeping to a minimum the functions essential to communicate via this 
  1071. protocol, a wide range of peripheral devices of varying capability can operate 
  1072. in the same environment.
  1073.  
  1074.   Because subsets of the full architecture may be implemented, optional 
  1075. functions are noted.
  1076.  
  1077. 6.1 Command Implementation Requirements.  The first byte of any SCSI command 
  1078. shall contain an operation code as defined in this document.  Three bits (bits 
  1079. 7 - 5) of the second byte of each SCSI command specify the logical unit if it 
  1080. is not specified using the IDENTIFY message (see 5.5.2).  The last byte of all 
  1081. SCSI commands shall contain a control byte as defined in 6.2.6.
  1082.  
  1083.   6.1.1 Reserved.  Reserved bits, fields, bytes, and code values are set aside 
  1084. for future standardization.  Their use and interpretation will be specified by 
  1085. future extensions to this standard.  A reserved bit, field, or byte shall be 
  1086. set to zero, or in accordance with a future extension to this standard.  A 
  1087. target that receives a reserved bit, field, or byte that is not zero or 
  1088. receives a reserved code value shall terminate the command with a CHECK 
  1089. CONDITION status and, if extended sense is implemented, the sense key shall be 
  1090. set to ILLEGAL REQUEST.  It shall also be acceptable for a target to interpret 
  1091. the bit, field, byte, or code value in accordance with a future extension to 
  1092. this standard.
  1093.  
  1094.   6.1.2 Operation Code Types
  1095.  
  1096. Operation 
  1097. Code Type  Description
  1098. ---------  -------------------------------------------------------------------
  1099. M          Mandatory - Commands so designated shall be implemented in order to 
  1100.            meet the minimum requirement of this standard.
  1101.  
  1102. E          Extended - Commands so designated shall be implemented in addition 
  1103.            to mandatory commands to meet the extended requirement of this 
  1104.  
  1105.            standard.
  1106.  
  1107. O          Optional - Commands so designated, if implemented, shall be 
  1108.            implemented as defined in this standard.
  1109.  
  1110. V          Vendor unique - Operation codes so designated are available for 
  1111.            vendor defined commands.  See the vendor specifications where 
  1112.            compatibility is desired.
  1113.  
  1114. R          Reserved - Operation codes so designated shall not be used.  They 
  1115.            are reserved for future extensions to this standard.
  1116.  
  1117.   6.1.3 Unit Attention Condition.  A unit attention condition for a logical 
  1118. unit shall begin for each initiator whenever the removable medium may have 
  1119. been changed or the target has been reset (by a BUS DEVICE RESET message or a 
  1120. "hard" RESET condition).  The unit attention condition shall persist for each 
  1121. initiator until that initiator issues a command to the logical unit other than 
  1122. REQUEST SENSE or INQUIRY for which the target shall return CHECK CONDITION 
  1123. status.  If the next command from that initiator to the logical unit 
  1124. (following the CHECK CONDITION status) is REQUEST SENSE, and if the target 
  1125. supports extended sense, then the UNIT ATTENTION sense key shall be returned.  
  1126. (If any command other than REQUEST SENSE is received, the unit attention 
  1127. condition is lost.)  
  1128. .fo Section 6                           50.1
  1129.  
  1130.   If an INQUIRY command is received from an initiator with a pending unit 
  1131. attention condition (before the target reports CHECK CONDITION status), the 
  1132. target shall perform the INQUIRY command and shall not clear the unit 
  1133. attention condition.
  1134.  
  1135.   If a REQUEST SENSE command is received from an initiator with a pending unit 
  1136. attention condition (before the target reports CHECK CONDITION status), then 
  1137. the target may either:
  1138.  
  1139.   (1) report any pending sense data and preserve the unit attention condition
  1140.   (2) discard any pending sense data, report UNIT ATTENTION sense key, and 
  1141. clear the unit attention condition for that initiator.
  1142.  
  1143.   If an initiator issues a command other than INQUIRY or REQUEST SENSE while a 
  1144. unit attention condition exists for that initiator, the target shall not 
  1145. perform the command and shall report CHECK CONDITION status.
  1146.  
  1147. 6.2 Command Descriptor Block.  A request to a peripheral device is performed 
  1148. by sending a command descriptor block to the target.  For several commands, 
  1149. the request is accompanied by a list of parameters sent during the DATA OUT 
  1150. phase.  See the specific commands for detailed information.
  1151.  
  1152.   The command descriptor block always has an operation code as the first byte 
  1153. of the command.  This is followed by a logical unit number, command parameters 
  1154. (if any), and a control byte.
  1155.  
  1156.   For all commands, if there is an invalid parameter in the command descriptor 
  1157. block, then the target shall terminate the command without altering the 
  1158. medium.
  1159.  
  1160.   6.2.1 Operation Code.  The operation code (Table 6-1) of the command 
  1161. descriptor block has a group code field and a command code field.  The three-
  1162.  
  1163. bit group code field provides for eight groups of command codes.  The five-bit 
  1164. command code field provides for thirty-two command codes in each group.  Thus, 
  1165. a total of 256 possible operation codes exist.  Operation codes are defined in 
  1166. Sections 7 through 13.
  1167.  
  1168.   The group code specifies one of the following groups:
  1169.  
  1170.   Group 0 - six-byte commands (see Table 6-2)
  1171.   Group 1 - ten-byte commands (see Table 6-3)
  1172.   Group 2 - reserved
  1173.   Group 3 - reserved
  1174.   Group 4 - reserved
  1175.   Group 5 - twelve-byte commands (see Table 6-4)
  1176.   Group 6 - vendor unique 
  1177.   Group 7 - vendor unique
  1178. .pa
  1179.  
  1180. .fo Section 6                           50.2
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204.                      (This page is intentionally blank.)
  1205. .pa
  1206.  
  1207. .pn 51
  1208. .fo Section 6                             #
  1209.                                   Table 6-1
  1210.                                 Operation Code
  1211.  
  1212.  
  1213. ==============================================================================
  1214.   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
  1215. Byte |        |        |        |        |        |        |        |        |
  1216. ==============================================================================
  1217.  0   |        Group Code        |                Command Code                |
  1218. ==============================================================================
  1219.  
  1220.  
  1221.                                   Table 6-2
  1222.             Typical Command Descriptor Block for Six-byte Commands
  1223.  
  1224. ==============================================================================
  1225.   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
  1226. Byte |        |        |        |        |        |        |        |        |
  1227. ==============================================================================
  1228.  0   |                           Operation Code                              |
  1229. -----|-----------------------------------------------------------------------|
  1230.  1   |   Logical Unit Number    |Logical Block Address (if required) (MSB)   |
  1231. -----|-----------------------------------------------------------------------|
  1232.  2   |                           Logical Block Address (if required)         |
  1233. -----|-----------------------------------------------------------------------|
  1234.  3   |                           Logical Block Address (if required) (LSB)   |
  1235. -----|-----------------------------------------------------------------------|
  1236.  4   |                           Transfer Length (if required)               |
  1237. -----|-----------------------------------------------------------------------|
  1238.  5   |                           Control Byte                                |
  1239. ==============================================================================
  1240. .pa
  1241.  
  1242.                                   Table 6-3
  1243.             Typical Command Descriptor Block for Ten-byte Commands
  1244.  
  1245. ==============================================================================
  1246.   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
  1247. Byte |        |        |        |        |        |        |        |        |
  1248. ==============================================================================
  1249.  0   |                           Operation Code                              |
  1250. -----|-----------------------------------------------------------------------|
  1251.  1   |   Logical Unit Number    |              Reserved             | RelAdr |
  1252. -----|-----------------------------------------------------------------------|
  1253.  2   |                           Logical Block Address (if required) (MSB)   |
  1254. -----|-----------------------------------------------------------------------|
  1255.  3   |                           Logical Block Address (if required)         |
  1256. -----|-----------------------------------------------------------------------|
  1257.  4   |                           Logical Block Address (if required)         |
  1258. -----|-----------------------------------------------------------------------|
  1259.  5   |                           Logical Block Address (if required) (LSB)   |
  1260. -----|-----------------------------------------------------------------------|
  1261.  6   |                           Reserved                                    |
  1262. -----|-----------------------------------------------------------------------|
  1263.  7   |                           Transfer Length (if required) (MSB)         |
  1264. -----|-----------------------------------------------------------------------|
  1265.  8   |                           Transfer Length (if required) (LSB)         |
  1266. -----|-----------------------------------------------------------------------|
  1267.  9   |                           Control Byte                                |
  1268. ==============================================================================
  1269. .pa
  1270.  
  1271.                                   Table 6-4
  1272.           Typical Command Descriptor Block for Twelve-byte Commands
  1273.  
  1274. ==============================================================================
  1275.   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
  1276. Byte |        |        |        |        |        |        |        |        |
  1277. ==============================================================================
  1278.  0   |                           Operation Code                              |
  1279. -----|-----------------------------------------------------------------------|
  1280.  1   |   Logical Unit Number    |              Reserved             | RelAdr |
  1281. -----|-----------------------------------------------------------------------|
  1282.  2   |                           Logical Block Address (if required) (MSB)   |
  1283. -----|-----------------------------------------------------------------------|
  1284.  3   |                           Logical Block Address (if required)         |
  1285. -----|-----------------------------------------------------------------------|
  1286.  4   |                           Logical Block Address (if required)         |
  1287. -----|-----------------------------------------------------------------------|
  1288.  5   |                           Logical Block Address (if required) (LSB)   |
  1289. -----|-----------------------------------------------------------------------|
  1290.  6   |                           Reserved                                    |
  1291. -----|-----------------------------------------------------------------------|
  1292.  7   |                           Reserved                                    |
  1293. -----|-----------------------------------------------------------------------|
  1294.  8   |                           Reserved                                    |
  1295. -----|-----------------------------------------------------------------------|
  1296.  9   |                           Transfer Length (if required) (MSB)         |
  1297. -----|-----------------------------------------------------------------------|
  1298. 10   |                           Transfer Length (if required) (LSB)         |
  1299. -----|-----------------------------------------------------------------------|
  1300. 11   |                           Control Byte                                |
  1301. ==============================================================================
  1302.  
  1303.   6.2.2 Logical Unit Number.  The logical unit number addresses one of up to 
  1304. eight physical or virtual devices attached to a target.  This method of 
  1305. addressing is provided for systems that do not implement the IDENTIFY message.  
  1306. A target that accepts an IDENTIFY message shall use the logical unit number 
  1307. specified within the message.  In this case, the target shall ignore the 
  1308. logical unit number specified within the command descriptor block.  
  1309. (Implementors note:  It is a good practice for initiators that implement the 
  1310. IDENTIFY message to specify the same logical unit number in the command 
  1311. descriptor block.)
  1312.  
  1313.   6.2.3 Logical Block Address.  The logical block address on logical units 
  1314. shall begin with block zero and be contiguous up to the last logical block on 
  1315. that logical unit.
  1316.  
  1317.   Group 0 command descriptor blocks contain 21-bit logical block addresses.  
  1318. Groups 1 and 5 command descriptor blocks contain 32-bit logical block 
  1319. addresses.
  1320.  
  1321.   The logical block concept implies that the initiator and target shall have 
  1322. previously established the number of data bytes per logical block.  This may 
  1323. be established through the use of the READ CAPACITY command or the MODE SENSE 
  1324. command or by prior arrangement.
  1325. .pa
  1326.  
  1327.   6.2.4 Relative Address Bit.  The relative address (RelAdr) bit of the 
  1328. group1 and group 5 commands is set to one to indicate that the logical block 
  1329. address portion of the command descriptor block is a two's complement 
  1330. displacement.  This negative or positive displacement is to be added to the 
  1331. logical block address last accessed on the logical unit to form the logical 
  1332. block address for this command.  This feature is only available when linking 
  1333. commands.  The feature requires that a previous command in the linked group 
  1334. have accessed a block of data on the logical unit.  (For an example of the 
  1335. operation of this function, see Section 6.3.3.)
  1336.  
  1337.   6.2.5 Transfer Length.  The transfer length specifies the amount of data to 
  1338. be transferred, usually the number of blocks.  For several commands the 
  1339. transfer length indicates the requested number of bytes to be sent as defined 
  1340. in the command description.  For these commands the transfer length field may 
  1341. be identified by a different name.  See the following descriptions and the 
  1342. individual command descriptions for further information.
  1343.  
  1344.   Commands that use one byte for transfer length allow up to 256 blocks of 
  1345. data to be transferred by one command.  A transfer length value of 1 to 255 
  1346. indicates the number of blocks that shall transferred.  A value of zero 
  1347. indicates 256 blocks.
  1348.  
  1349.   Commands that use two bytes for transfer length allow up to 65,535 blocks of 
  1350. data to be transferred by one command.  In this case, a transfer length of 
  1351. zero indicates that no data transfer shall take place.  A value of 1 to 65,535 
  1352. indicates the number of blocks that shall be transferred. 
  1353.  
  1354.   For several commands more than two bytes are allocated for transfer length.  
  1355. Refer to the specific command description for further information.
  1356.  
  1357.   The transfer length of the commands that are used to send a list of 
  1358. parameters to a target is called the parameter list length.  The parameter 
  1359. list length specifies the number of bytes sent during the DATA OUT phase.
  1360.  
  1361.   The transfer length of the commands that are used to return sense data (e.g. 
  1362. REQUEST SENSE, INQUIRY, MODE SENSE, etc) to an initiator is called the 
  1363. allocation length.  The allocation length specifies the number of bytes that 
  1364. the initiator has allocated for returned data.  The target shall terminate the 
  1365. DATA IN phase when allocation length bytes have been transferred or when all 
  1366. available sense data have been transferred to the initiator, whichever is 
  1367. less.
  1368.  
  1369.   6.2.6 Control Byte.  The control byte is the last byte of every command 
  1370. descriptor block.  A typical control byte is described in Table 6-5.
  1371. .pa
  1372.  
  1373.                                   Table 6-5
  1374.                                  Control Byte
  1375.  
  1376. ==============================================================================
  1377.   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    | 
  1378. Byte |        |        |        |        |        |        |        |        |
  1379. ==============================================================================
  1380. Last | Vendor unique   |            Reserved               |  Flag  |  Link  |
  1381. ==============================================================================
  1382.  
  1383.  Bit    Description
  1384. -----   ----------------------------------------------------------------------
  1385. 7 _ 6   Vendor unique
  1386.  
  1387. 5 _ 2   Reserved
  1388.  
  1389.   1     Flag bit - If the link bit is zero, then the flag bit shall be set to 
  1390.         zero.  If the link bit is one, and if the command terminates 
  1391.         successfully, the target shall send LINKED COMMAND COMPLETE message if 
  1392.         the flag bit is zero and shall send LINKED COMMAND COMPLETE (WITH 
  1393.         FLAG) message if the flag bit is one.  Typically, this bit is used to 
  1394.         cause an interrupt in the initiator between linked commands.
  1395.  
  1396.   0     Link bit - This bit is set to one to indicate that the initiator 
  1397.         desires an automatic link to the next command upon successful 
  1398.         completion of the current command.  Implementation of linked commands 
  1399.         is optional.  If the link bit is one, targets that implement linked 
  1400.         commands, upon successful termination of the command, shall return 
  1401.         INTERMEDIATE status and shall then send one of the two messages 
  1402.         defined by the flag bit (above).
  1403.  
  1404.         Targets that do not implement linked commands shall return a CHECK 
  1405.         CONDITION status and, if extended sense is implemented, shall set the 
  1406.         sense key to ILLEGAL REQUEST if either of the link and flag bits are 
  1407.         set to one.
  1408.  
  1409. 6.3 Command Examples
  1410.  
  1411.   6.3.1 Single Command Example.  A typical operation on the SCSI bus is likely 
  1412. to include a single READ command to a peripheral device.  This operation is 
  1413. described in detail starting with a request from the initiator.  This example 
  1414. assumes that no linked commands and no malfunctions or errors occur.
  1415.  
  1416.   The initiator has active pointers and a set of stored pointers representing 
  1417. active disconnected SCSI devices (an initiator without disconnect capability 
  1418. does not require stored pointers).  The initiator sets up the active pointers 
  1419. for the operation requested, arbitrates for the SCSI bus, and selects the 
  1420. target.  Once this process is completed, the target assumes control of the 
  1421. operation.
  1422.  
  1423.   The target obtains the command from the initiator (in this case, a READ 
  1424. command).  The target interprets the command and executes it.  In this case, 
  1425. the target gets the data from the peripheral device and sends it to the 
  1426. initiator.  At the completion of the READ command, the target sends a status 
  1427. byte to the initiator.  To end the operation, the target sends a COMMAND 
  1428. COMPLETE message to the initiator.
  1429.  
  1430.  
  1431.   6.3.2 Disconnect Example.  In the above single command example, the length 
  1432. of time necessary to obtain the data may require a time-consuming physical 
  1433. seek.  In order to improve system throughput, the target may disconnect from 
  1434. the initiator, freeing the SCSI bus to allow other requests to be sent to 
  1435. other logical units.  To do this, the initiator needs to be reselectable and 
  1436. capable of restoring the pointers upon reconnection.  The target needs to be 
  1437. capable of arbitrating for the SCSI bus and reselecting the initiator.
  1438.  
  1439.   After the target has received the READ command (and has determined that 
  1440. there will be a delay), it disconnects by sending a DISCONNECT message and 
  1441. releasing BSY.
  1442.  
  1443.   When the data are ready to be transferred, the target reconnects to the 
  1444. initiator.  As a result of this reconnection, the initiator restores the 
  1445. pointers to their most recent saved values (which, in this case, are the 
  1446. initial values) and the target continues (as in the single command example) to 
  1447. finish the operation.  The initiator recognizes that the operation is complete 
  1448. when COMMAND COMPLETE message is received.
  1449.  
  1450.   If target wishes to disconnect after transferring part of the data (e.g., 
  1451. while crossing a cylinder boundary), it may do so by sending a SAVE DATA 
  1452. POINTER message and a DISCONNECT message to the initiator and then 
  1453. disconnecting.  When reconnection is completed, the current data pointer value 
  1454. is restored to its value immediately prior to the SAVE DATA POINTER message.
  1455.  
  1456.   On those occasions when an error or exception condition occurs and the 
  1457. target elects to repeat the information transfer, the target may repeat the 
  1458. transfer by either issuing a RESTORE POINTERS message or by disconnecting 
  1459. without issuing a SAVE DATA POINTER message.  When reconnection is completed, 
  1460. the most recent saved pointer values are restored.
  1461.  
  1462.   6.3.3 Linked Command Example.  The link function defines a relationship 
  1463. between commands that when combined with the relative address bit, allows 
  1464. previous operations to modify subsequent operations.  Link makes high-
  1465. performance functions possible by providing a relative addressing capability 
  1466. and allowing multiple command execution without invoking the functional 
  1467. component of the initiator.
  1468.  
  1469.   If the desired data address (in the previously described READ command 
  1470. example) is unknown, but a search key defined as some particular bytes of a 
  1471. field is known, then by linking the READ command to a SEARCH DATA EQUAL 
  1472. command, the data can be quickly and effectively transferred to the initiator. 
  1473.  
  1474.   A LINKED COMMAND COMPLETE message is sent from the target to the initiator 
  1475. to indicate linked command completion.  The initiator then updates the stored 
  1476. pointers so that subsequent requests from the target will reference the next 
  1477. command of the chain.  Command processing of linked and single commands is 
  1478. simular except that relative addressing is permitted in linked commands.  
  1479. Linked commands shall be addressed to a single logical unit.
  1480.  
  1481.   For example, the successful completion of a SEARCH DATA EQUAL command causes 
  1482. the target to fetch the linked READ command from the initiator.  If the 
  1483. relative address bit in the READ command has been set to one, and the address 
  1484. field of the READ command is set to zero, the target transfers the 
  1485. successfully searched block to the initiator. 
  1486.  
  1487. 
  1488.  
  1489.